#include "fifo.h"

void crearcola(t_cola *p)
{
	p->pri=NULL;
	p->ulti=NULL;
}

int colavacia(const t_cola *p)
{
	return p->pri==NULL;
}

int colallena(const t_cola *p)
{
	void *aux=(t_nodo_fifo *)malloc(sizeof(t_nodo_fifo));
	free(aux);
	return aux==NULL;
}

int ponerencola(t_cola *p,t_info_fifo *d)
{
	t_nodo_fifo *nuevo=(t_nodo_fifo *)malloc(sizeof(t_nodo_fifo));
	if(nuevo==NULL)
		return 0;
	nuevo->info=*d; 
	nuevo->sig=NULL;
	if(p->pri==NULL)
		p->pri=nuevo;
	else
		p->ulti->sig=nuevo;
	p->ulti=nuevo;
	return 1;
}

int verprimerocola(const t_cola *p,t_info_fifo *d)
{
	if(p->pri==NULL)
		return 0;
	*d=p->pri->info;
	return 1;
}

int sacardecola(t_cola *p,t_info_fifo *d)
{
	t_nodo_fifo *aux;
	if(p->pri==NULL)
	   return 0;
	aux=p->pri;
	p->pri=aux->sig;
	*d=aux->info;
	free(aux);
	if(p->pri==NULL)
		p->ulti=NULL;
	return 1;
}

void vaciarcola(t_cola *p)
{
	t_nodo_fifo *aux;
	while(p->pri)
	{
		aux=p->pri;
		p->pri=aux->sig;
		free(aux);
	}
	/*printf("\n \t La cola esta vacia (vaciarcola).");*/
	p->ulti=NULL;
}
